package com.hup.vd.model.bo;

import com.hup.vd.model.config.TaskInfo;
import lombok.AccessLevel;
import lombok.Data;
import lombok.Setter;

import java.util.ArrayList;

/**
 * 任务列表
 *
 * @author hugan
 * @date 2022/1/10
 */
@Data
public class TaskListData {

    /**
     * 未下载完的任务
     * 名字有点歧义,but是根据迅雷的界面[正在下载]命名的
     * 实际上任务只是在'正在下载列表中',但不一定是正在下载的!
     */
    private ArrayList<TaskInfo> downloading = new ArrayList<>();

    /**
     * 已完成
     */
    private ArrayList<TaskInfo> finished = new ArrayList<>();

    /**
     * 数据更新监听器
     */
    @Setter(value = AccessLevel.PRIVATE)
    private ArrayList<TaskListUpdateListener> listeners = new ArrayList<>();

    public void notifyTaskUpdated() {
        for (TaskListUpdateListener listener : listeners) listener.onUpdated(this);
    }

    public interface TaskListUpdateListener {
        void onUpdated(TaskListData taskListData);
    }

    @Override
    public String toString() {
        return "TaskListData{" +
                "downloading=" + downloading.size() +
                ", finished=" + finished.size() +
                '}';
    }
}
